using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.Reflection;
using MediaPortal.GUI.Library;

namespace OnlineVideos
{
	public class SiteUtilFactory
	{
		//private static bool loadedSites = false;
		private static Dictionary<String,SiteUtilBase> moSiteTable = new Dictionary<String,SiteUtilBase>();
		static SiteUtilFactory(){
			loadSites();
		}
		private static void loadSites(){
			Assembly assembly = Assembly.GetCallingAssembly();
			Log.Info("Assembly name: {0}",assembly.GetName().Name);
			// Get all Types available in the assembly in an array
			Type[] typeArray = assembly.GetTypes ();
			foreach (Type type in typeArray) {
				if(type.BaseType!=null && type.BaseType.FullName.ToString() == "OnlineVideos.SiteUtilBase"){
					
					SiteUtilBase  site= (SiteUtilBase)Activator.CreateInstance(type);
                    if (moSiteTable.ContainsKey(site.getSiteId()))
                    {
                        Log.Error("Unable to add site id {0} because it has already been added.");


                    }
                    else
                    {
                        moSiteTable.Add(site.getSiteId(), site);
                    }
					
				}
			}
		}
		public static SiteUtilBase getSiteUtil(String fsSiteId)
		{			
			//bool lbFound = false;
			if (moSiteTable.ContainsKey(fsSiteId))
			{
				return moSiteTable[fsSiteId];
			}
//
//			if (fsSiteId == "1")
//			{
//				lbFound  =true;
//				moSiteTable.Add("1", new YouTubeUtil());
//			}
//			else if (fsSiteId == "2")
//			{
//				lbFound  =true;
//				moSiteTable.Add("2", new GoogleVideoUtil());
//			}
//			else if (fsSiteId == "3")
//			{
//				lbFound  =true;
//				moSiteTable.Add("3", new GrouperUtil());
//			}
//			else if (fsSiteId == "4")
//			{
//				lbFound  =true;
//				moSiteTable.Add("4", new GubaUtil());
//			}
//			else if (fsSiteId == "5")
//			{
//				lbFound  =true;
//				moSiteTable.Add("5", new MetaCafeUtil());
//			}
//			else if (fsSiteId == "6")
//			{
//				lbFound  =true;
//				moSiteTable.Add("6", new DailyMotionUtil());
//			}
//			/*
//            else if (fsSiteId == "7")
//            {
//                lbFound = true;
//                moSiteTable.Add("7", new AppleTrailerUtil());
//            }
//			 */
//			else if (fsSiteId == "99")
//			{
//				lbFound = true;
//				moSiteTable.Add("99", new DownloadedVideoUtil());
//			}
//			/*
//            else if (fsSiteId == "8")
//            {
//                lbFound = true;
//                moSiteTable.Add("8", new AbcUtil());
//            }
//			 */
//			else if (fsSiteId == "9")
//			{
//				lbFound = true;
//				moSiteTable.Add("9", new BlipTvUtil());
//			}
//			else if (fsSiteId == "10")
//			{
//				lbFound = true;
//				moSiteTable.Add("10", new CbsUtil());
//			}
//			else if (fsSiteId == "11")
//			{
//				lbFound = true;
//				moSiteTable.Add("11", new GameTrailersUtil());
//			}
//			else if (fsSiteId == "12")
//			{
//				lbFound = true;
//				moSiteTable.Add("12", new SoapBoxUtil());
//			}
//			else if (fsSiteId == "13")
//			{
//				lbFound = true;
//				moSiteTable.Add("13", new VideoJugUtil());
//			}
//			else if (fsSiteId == "14")
//			{
//				lbFound = true;
//				moSiteTable.Add("14", new VidiLifeUtil());
//			}
//			else if (fsSiteId == "15")
//			{
//				lbFound = true;
//				moSiteTable.Add("15", new ItunesTrailerUtil());
//			}
//			else if (fsSiteId == "16")
//			{
//				lbFound = true;
//				moSiteTable.Add("16", new MyVideodeUtil());
//			}
//			else if (fsSiteId == "17")
//			{
//				lbFound = true;
//				moSiteTable.Add("17", new RocketboomUtil());
//			}
//			if(lbFound){
//				return moSiteTable[fsSiteId];
//			}
			return null;
		}
	}
}
